package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.TipoPallet;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 * @version 1.01
 */
public class TipoPalletDAO extends GenericSAPDAO {
        
    //Atributos
    private List <TipoPallet> misTipoPallet;
    
    
    public TipoPalletDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("T_TIPO_PALET");
        super.setMyTable(aFunction);
        this.misTipoPallet = new ArrayList<TipoPallet>();
    }
    
    /**
     * Columnas de Tipo Palet:
     * MANDT            MANDT           CLNT	3	0   Mandante
     * TIPO_PAL         ZTIPOPAL	CHAR	1	0   Tipo de Pallet
     * ZDESCRIP		ZDES_PALLET	CHAR	40	    Descripción tipo de pallet
     * ZBLTXPALVIS	ZBLTXPALVIS	NUMC3               Bultos Visibles
     * ZBLTXPALOCUL	ZBLTXPALOCUL	NUMC3	            Bultos Ocultos
     * ZBLTXPALL	ZBLTXPALL	NUMC5	            Bultos por pallet
     * DATUM		DATUM		DATS	8	    Fecha
     * USNAME		CP_UNAME	CHAR	12	    Nombre de usuario
     */

    @Override
    public void findAll() throws SapGeneralException {
        TipoPallet aTipoPallet;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i);            
                aTipoPallet = new TipoPallet(super.getMyTable().getString("MANDT"), super.getMyTable().getChar("TIPO_PAL"), super.getMyTable().getString("ZDESCRIP"), super.getMyTable().getInt("ZBLTXPALVIS"), super.getMyTable().getInt("ZBLTXPALOCUL"), super.getMyTable().getInt("ZBLTXPALL"), super.getMyTable().getDate("DATUM"), super.getMyTable().getString("USNAME"));
                addTipoPallet(aTipoPallet);
            }
            
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
        }

    }
        
    /**
     * Solo para las pruebas
     */   
    @Override
    public void printAll() {
        System.out.println("MANDT"+'\t'+"TIPO_PAL"+'\t'+"ZDESCRIP"+'\t'+"ZBLTXPALVIS"+'\t'+"ZBLTXPALOCUL"+'\t'+"ZBLTXPALL"+'\t'+"DATUM"+'\t'+"USNAME");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("MANDT")  +
            '\t' + super.getMyTable().getString("TIPO_PAL") +
            '\t' + super.getMyTable().getString("ZDESCRIP") +
            '\t' + super.getMyTable().getString("ZBLTXPALVIS") +
            '\t' + super.getMyTable().getString("ZBLTXPALOCUL") +
            '\t' + super.getMyTable().getString("ZBLTXPALL") +
            '\t' + super.getMyTable().getString("DATUM") +
            '\t' + super.getMyTable().getString("USNAME")
            );                
        }  
    }

    private void addTipoPallet(TipoPallet aTipoPallet) {
        this.misTipoPallet.add(aTipoPallet);
    }

    public List<TipoPallet> getMisTipoPallet() {
        return misTipoPallet;
    }



}
